// pages/account-management/account-management.ts
import { PAGES, goToPage } from '../../../config/pages';
import userManager from '../../../utils/userManager.js';

Page({
  data: {
    userInfo: {
      uid: 0,
      name: '',
      nickname: '',
      company: '',
      phone: '',
      avatar: '',           // 头像URL（如果有）
      avatarType: 'text',   // 'image' 或 'text'
      avatarInitial: '',    // 首字母（当没有头像时）
      verificationStatus: 'verified',
      verificationText: '已审核',
    },
    functions: [
      { icon: 'fa-camera', text: '修改我的头像', url: PAGES.EDIT_AVATAR },
      { icon: 'fa-user', text: '修改我的姓名', url: PAGES.EDIT_NAME },
      /*{ icon: 'fa-building', text: '修改我的企业', url: PAGES.EDIT_COMPANY },
      { icon: 'fa-phone', text: '修改手机号', url: PAGES.EDIT_PHONE },*/
    ],
  },

  onLoad() {
    // 首次加载时显示 loading
    this.loadUserInfo(true);
  },

  onShow() {
    // 页面显示时重新加载用户信息（从缓存获取最新数据）
    // 编辑页面修改成功后已经刷新了缓存，这里直接读取即可
    // 不显示 loading，避免闪烁
    this.loadUserInfo(false);
  },

  async loadUserInfo(showLoading = false) {
    try {
      // 从缓存获取用户信息（如果没有则从服务器获取）
      const userData = await userManager.getUserInfo(false, showLoading);
      
      if (userData) {
        // 格式化手机号 (中间4位显示为星号)
        const displayPhone = userManager.formatPhone(userData.phone);
        
        // 获取企业信息
        const enterpriseInfo = userManager.getEnterpriseInfo();
        const hasEnterprise = userManager.hasEnterprise();
        
        // 获取头像或首字母
        const avatarData = userManager.getUserAvatarOrInitial();
        
        // 根据企业关联状态设置企业状态
        let verificationStatus = '';
        let verificationText = '';
        let verificationColor = '';
        let verificationIcon = '';
        
        if (hasEnterprise && enterpriseInfo) {
          // 有企业信息时，根据企业审核状态设置
          const status = String(enterpriseInfo.status || '0');
          const statusMap = {
            '0': { text: '审核中', color: '#ed7b2f', icon: 'fa-clock' },
            '1': { text: '已认证', color: '#00a870', icon: 'fa-check-circle' },
            '2': { text: '审核未通过', color: '#d54941', icon: 'fa-times-circle' }
          };
          
          const statusInfo = statusMap[status as '0' | '1' | '2'] || { 
            text: '未知', 
            color: '#999', 
            icon: 'fa-question-circle' 
          };
          
          verificationStatus = status === '1' ? 'verified' : (status === '2' ? 'rejected' : 'pending');
          verificationText = statusInfo.text;
          verificationColor = statusInfo.color;
          verificationIcon = statusInfo.icon;
        }
        // 未关联企业时，不设置状态（空字符串）
        
        this.setData({
          'userInfo.uid': userData.uid || 0,
          'userInfo.nickname': userData.nickname || '',
          'userInfo.name': userData.real_name || userData.nickname || '',
          'userInfo.phone': displayPhone,
          'userInfo.avatar': avatarData.type === 'image' ? avatarData.value : '',
          'userInfo.avatarType': avatarData.type,
          'userInfo.avatarInitial': avatarData.type === 'text' ? avatarData.value : '',
          'userInfo.company': enterpriseInfo?.company_name || enterpriseInfo?.name || '未关联企业',
          'userInfo.verificationStatus': verificationStatus,
          'userInfo.verificationText': verificationText,
          'userInfo.verificationColor': verificationColor,
          'userInfo.verificationIcon': verificationIcon
        });
      }
    } catch (error: any) {
      console.error('加载用户信息失败:', error);
      
      wx.showToast({
        title: typeof(error) === 'string' ? error : (error?.msg || '加载失败'),
        icon: 'none'
      });
    }
  },

  navigateToEdit(e: any) {
    const { url } = e.currentTarget.dataset;
    if (url) {
      goToPage(url);
    }
  },

  showSettings() {
    wx.showToast({
      title: '正在打开系统设置...',
      icon: 'none',
    });
  },

  showHelp() {
    wx.showToast({
      title: '正在打开帮助中心...',
      icon: 'none',
    });
  },
});

